﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Telerik.Web.UI;
using SMA.GENTEv1;

public partial class Protegidos_Pessoas_DadosPessoa__popup_ppEndereco : System.Web.UI.Page
{
    protected int idPessoa = 0;
    private int id = 0;

    protected void Page_Load(object sender, EventArgs e)
    {
        if ((Session["IdPessoa"] != null))
            idPessoa = int.Parse(Session["IdPessoa"].ToString());

        if (Request.QueryString["Id"] != null)
            id = Int32.Parse(Request.QueryString["Id"].ToString());

        if (!IsPostBack)
        {
            CarregarStatus(rcbStatus);
            CarregarEstado(rcbEstado);
            CarregarTipoEndereco(rcbTipoEndereco);
            CarregarTipoLogradouro(rcbTipoLogradouro);

            rcbCidade.Enabled = false;

            if (id != 0)
                CarregarPessoaEndereco();
        }
    }

    #region Eventos
    protected void btnSalvar_Click(object sender, EventArgs e)
    {
        PessoaEndereco endereco = new PessoaEndereco();
        endereco.IdPessoaEndereco = id;
        endereco.IdPessoa = idPessoa;
        endereco.TipoLogradouro = new TipoLogradouro(Int32.Parse(rcbTipoLogradouro.SelectedValue.ToString()));
        endereco.Logradouro = txtLogradouro.Text;
        endereco.Numero = txtNumero.Text;
        if (txtComplemento.Text != "")
            endereco.Complemento = txtComplemento.Text;
        endereco.Cep = Convert.ToDouble(txtCep.Text.Replace("-", ""));
        endereco.Bairro = txtBairro.Text;
        endereco.Cidade = new Cidade(Int32.Parse(rcbCidade.SelectedValue.ToString()));
        endereco.StatusEndereco = new StatusEndereco(Int32.Parse(rcbStatus.SelectedValue.ToString()));
        endereco.TipoEndereco = new TipoEndereco(Int32.Parse(rcbTipoEndereco.SelectedValue.ToString()));

        endereco.Salvar();

        ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CloseAndRebind('email');", true);
    }
    protected void btnLimpar_Click(object sender, EventArgs e)
    {
        Limpar();
    }
    protected void rcbEstado_SelectedIndexChanged(object o, RadComboBoxSelectedIndexChangedEventArgs e)
    {
        CarregarCidade(rcbCidade, Int32.Parse(rcbEstado.SelectedValue.ToString()));
        rcbCidade.Enabled = true;
    }
    #endregion

    #region Metodos
    private void CarregarTipoLogradouro(RadComboBox combo)
    {
        try
        {
            TipoLogradouro tipoLogradouro = new TipoLogradouro();

            combo.DataTextField = "Descricao";
            combo.DataValueField = "IdTipoLogradouro";
            combo.DataSource = tipoLogradouro.SelectAll();
            combo.DataBind();

            InserirSelecione(combo);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    private void CarregarTipoEndereco(RadComboBox combo)
    {
        try
        {
            TipoEndereco tipoEndereco = new TipoEndereco();

            combo.DataTextField = "Descricao";
            combo.DataValueField = "IdTipoEndereco";
            combo.DataSource = tipoEndereco.SelectAll();
            combo.DataBind();

            InserirSelecione(combo);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    private void CarregarEstado(RadComboBox combo)
    {
        try
        {
            Uf uf = new Uf();

            combo.DataTextField = "Sigla";
            combo.DataValueField = "IdUf";
            combo.DataSource = uf.SelectAll();
            combo.DataBind();

            InserirSelecione(combo);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    private void CarregarCidade(RadComboBox combo, int idUf)
    {
        try
        {
            Cidade cidade = new Cidade();

            combo.DataTextField = "NomeCidade";
            combo.DataValueField = "IdCidade";
            combo.DataSource = cidade.SelectUf(idUf);
            combo.DataBind();

            InserirSelecione(combo);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    private void CarregarStatus(RadComboBox combo)
    {
        try
        {
            StatusEndereco status = new StatusEndereco();

            combo.DataTextField = "Descricao";
            combo.DataValueField = "IdStatusEndereco";
            combo.DataSource = status.SelectAll();
            combo.DataBind();

            InserirSelecione(combo);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    private void InserirSelecione(RadComboBox combo)
    {
        try
        {
            combo.Items.Insert(0, new RadComboBoxItem(" -- Selecione -- ", "0"));
            combo.SelectedIndex = 0;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    private void CarregarPessoaEndereco()
    {
        rcbCidade.Enabled = true;

        PessoaEndereco endereco = new PessoaEndereco(id);
        rcbTipoLogradouro.SelectedValue = endereco.TipoLogradouro.IdTipoLogradouro.ToString();
        txtLogradouro.Text = endereco.Logradouro;
        txtNumero.Text = endereco.Numero;
        if (endereco.Complemento != "")
            txtComplemento.Text = endereco.Complemento;
        txtCep.Text = endereco.Cep.ToString();
        txtBairro.Text = endereco.Bairro;
        rcbEstado.SelectedValue = endereco.Cidade.Uf.IdUf.ToString();
        CarregarCidade(rcbCidade, endereco.Cidade.Uf.IdUf);
        rcbCidade.SelectedValue = endereco.Cidade.IdCidade.ToString();
        rcbStatus.SelectedValue = endereco.StatusEndereco.IdStatusEndereco.ToString();
        rcbTipoEndereco.SelectedValue = endereco.TipoEndereco.IdTipoEndereco.ToString();
    }
    private void Limpar()
    {
        CarregarStatus(rcbStatus);
        CarregarEstado(rcbEstado);
        CarregarTipoEndereco(rcbTipoEndereco);
        CarregarTipoLogradouro(rcbTipoLogradouro);

        txtLogradouro.Text = "";
        txtNumero.Text = "";
        txtComplemento.Text = "";
        txtCep.Text = "";
        txtBairro.Text = "";
    }
    #endregion
}
